home *** CD-ROM | disk | FTP | other *** search
- KBCM TITLE 'KERMBOOT - BOOTSTRAP FOR LOADING KERMIT-CMS' 00000010
- *********************************************************************** 00000020
- * KERMBOOT VERSION 2 - J.F.CHANDLER, 1987 SEPTEMBER * 00000030
- * * 00000040
- * KERMBOOT SHOULD BE GENMOD'ED AS A SMALL USER-AREA MODULE * 00000050
- * NAMED 'KERMIT'. IT WILL STEAL FREE STORAGE AND LOAD FROM * 00000060
- * 'KERMIT TEXT' INTO THAT AREA AND ALSO COPY A STUB FROM THE * 00000070
- * BOOT ROUTINE. THE STUB WILL CALL KERMIT AND, UPON RETURN, * 00000080
- * RELEASE THE FREE STORAGE AND RETURN TO THE SYSTEM. * 00000090
- * * 00000100
- * REGISTERS USED: * 00000110
- * 3 = SAVED FREELOWE ON ENTRY * 00000120
- * 4 = FREELOWE SET AFTER LOADING * 00000130
- * 5 = SAVED MAINHIGH * 00000140
- * 6 -> START OF STORAGE * 00000150
- * 7 = SAVED SYSTEM RETURN ADR * 00000160
- * 8 -> START OF BOOT PROGRAM (X'20000') * 00000170
- * 9 = SAVED LOCCNT * 00000180
- * 10 = SAVED REGISTER 1 ON ENTRY * 00000190
- * 12 = START OF KERMIT PROGRAM * 00000200
- * 13 -> SYSTEM SAVE AREA * 00000210
- *********************************************************************** 00000220
- SPACE 00000230
- PRINT NOGEN 00000240
- NUCON 00000250
- USING NUCON,0 00000260
- KERMBOOT START X'20000' 00000270
- LR 8,15 00000280
- USING KERMBOOT,8 00000290
- LR 10,1 SAVE REGS 00000300
- LR 7,14 00000310
- XC EPL,EPL CLEAR PTR TO EXT. PLIST 00000320
- CLM 10,8,=X'01' 00000330
- BL NOEPL 00000340
- CLM 10,8,=X'0B' 00000350
- BH NOEPL 00000360
- LR 1,0 00000370
- MVC EPL(16),0(1) COPY EPL PTRS 00000380
- NOEPL MVC SVLBS,TXTLIBS SAVE LIBRARY NAMES 00000390
- ICM 0,15,TXTDIRC LOADED INTO MEMORY? 00000400
- BNZ SAVPTRS YES, DON'T MESS WITH THEM 00000410
- DMSKEY NUCLEUS 00000420
- MVI TXTLIBS,X'FF' CLEAR ALL NAMES 00000430
- MVC TXTLIBS+1(63),TXTLIBS 00000440
- DMSKEY RESET 00000450
- SAVPTRS L 9,LOCCNT 00000460
- L 5,MAINHIGH 00000470
- L 3,FREELOWE SAVE THIS PTR FOR RESTORING 00000480
- LR 12,3 END OF STORAGE 00000490
- S 12,EXTRA ROOM FOR LOADER 00000500
- S 12,KSIZ LENGTH OF PROGRAM 00000510
- LR 4,12 SAVE 00000520
- SH 4,=H'4096' 00000530
- CR 4,5 ROOM ENOUGH? 00000540
- BL NOSTOR TOO BAD 00000550
- LR 6,4 SAVE START OF STUB 00000560
- ICM 1,15,EPL GET START OF COMMAND TEXT 00000570
- BZ NOEPLCOP NONE 00000580
- LA 15,BLENGTH(6) START OF AREA FOR COMMAND TEXT 00000590
- MVC 0(256,15),0(1) COPY TEXT 00000600
- SR 15,1 GET OFFSET BETWEEN AREAS 00000610
- LM 0,2,EPL 00000620
- AR 0,15 APPLY OFFSET 00000630
- AR 1,15 00000640
- AR 2,15 00000650
- STM 0,2,EPL 00000660
- NOEPLCOP ST 12,ORG START OF KERMIT 00000670
- UNPK LOADORG(7),ORG+1(4) 00000680
- TR LOADORG(6),HEXTAB 00000690
- MVI LOADORG+6,C' ' 00000700
- * WRTERM KNAME,LLOAD 00000710
- LA 1,LOAD 00000720
- SVC 202 GET KERMIT INTO MEMORY 00000730
- DC AL4(LDRFAIL) 00000740
- STM 1,12,SAVREG SAVE FOR CLEANUP 00000750
- DMSKEY NUCLEUS 00000760
- MVC TXTLIBS(64),SVLBS RESTORE TXTLIB NAMES 00000770
- ST 4,FREELOWE USE THIS PTR FOR DURATION 00000780
- ST 9,LOCCNT RESET LOADER ADR TO ORIGINAL 00000790
- ST 5,MAINHIGH RESET PROGRAM AREA LIMIT 00000800
- ST 8,STRTADDR RESET PROGRAM ENTRY POINT 00000810
- DMSKEY RESET 00000820
- MVC 0(BLENGTH,6),STUB COPY CODE INTO STUB 00000830
- LR 15,12 SET UP TO CALL PROGRAM 00000840
- LR 1,10 RECOVER ORIGINAL PARM LIST 00000850
- LA 0,EPL 00000860
- BR 6 BRANCH INTO COPY OF STUB 00000870
- * 00000880
- NOSTOR LINEDIT TEXT='NOT ENOUGH FREE STORAGE',DOT=NO 00000890
- LA 15,1 GIVE UP 00000900
- B RETSYS 00000910
- * 00000920
- LDRFAIL DMSEXS MVC,TXTLIBS(64),SVLBS RESTORE TXTLIB NAMES 00000930
- B RETSYS AND RETURN WITH ERROR CODE 00000940
- * 00000950
- * CODE COPIED INTO FREE STORAGE 00000960
- USING STUB,6 00000970
- DS 0D 00000980
- STUB BALR 14,15 CALL PROGRAM 00000990
- USING *,14 00001000
- LM 1,12,SAVREG JUST IN CASE 00001010
- DROP 14 00001020
- * 00001030
- * NOW WE OUGHT TO RE-LOAD THE BOOTSTRAP MODULE AND BRANCH BACK TO 00001040
- * IT, EXCEPT THAT WE ARE EXECUTING IN STOLEN STORAGE ANYWAY. 00001050
- * ALL THAT'S REALLY NEEDED IS TO RESET FREELOWE AND RETURN. 00001060
- * 00001070
- CLEANUP C 4,FREELOWE HOPE THIS IS BACK TO WHERE WE LEFT IT 00001080
- BNE RETSYS 00001090
- DMSEXS ST,3,FREELOWE GOOD, DESTROY EVIDENCE 00001100
- RETSYS LR 14,7 00001110
- BR 14 RETURN TO SYSTEM 00001120
- SAVREG DS 12F SAVE AREA FOR STUB 00001130
- EPL DS 4F EXTENDED PARAMETER LIST 00001140
- DS 0D 00001150
- BLENGTH EQU *-STUB 00001160
- * 00001170
- SVLBS DS CL64 SAVED TXTLIB NAMES 00001180
- ORG DS F SAVED START OF KERMIT 00001190
- KSIZ DC XL4'7000' ROOM ALLOWED FOR KERMIT 00001200
- EXTRA DC XL4'3000' EXTRA FOR SYSTEM 00001210
- LOAD DC CL8'LOAD' 00001220
- KNAME DC CL8'KERMIT',CL8'(',CL8'ORIGIN' 00001230
- LOADORG DC CL8' ' 00001240
- LLOAD EQU *-KNAME 00001250
- DC CL8'CLEAR',CL8'NOMAP',8X'FF' 00001260
- * 00001270
- HEXTAB EQU *-240 00001280
- DC C'0123456789ABCDEF' 00001290
- END KERMBOOT 00001300
-